package com.gengzp.system.service;

import com.gengzp.common.model.message.req.PageMessageReq;
import com.gengzp.common.model.message.resp.SearchMessageResp;
import com.gengzp.common.model.pagination.resp.PaginationResponse;
import com.gengzp.mq.client.model.message.MqPageMessageResp;
import com.gengzp.mq.client.model.topic.MqTopicResp;

import java.util.List;

/**
 * @ClassName MqService
 * @Description 消息队列管理模块服务层接口
 * @Author gengzp
 * @Date 2025/9/29 18:07
 */
public interface MqService {

    /**
     * 创建主题
     *
     * @param topicName   主题名称
     * @param description 描述
     */
    void createTopic(String topicName, String description);

    /**
     * 编辑主题描述
     *
     * @param topicName   主题名
     * @param description 描述
     */
    void editTopicDescription(String topicName, String description);

    /**
     * 删除主题
     *
     * @param topicName 主题名称
     */
    void removeTopic(String topicName);

    /**
     * 查询全部topic
     *
     * @return 全部topic集合
     */
    List<MqTopicResp> searchAllTopic();

    /**
     * 直接重发消息
     *
     * @param messageId 消息唯一标识
     */
    void resendMessage(String messageId);

    /**
     * 根据id查询消息详情
     *
     * @param messageId 消息唯一标识
     * @return 查询消息详情返回实体
     */
    SearchMessageResp searchMessageById(String messageId);

    /**
     * 分页查询消息
     */
    PaginationResponse<MqPageMessageResp> pageQueryMqMessages(PageMessageReq req);

}
